// public/workers/export.worker.js
// 注意：你需要将 xlsx.full.min.js 文件放在 public 目录下，或者使用 importScripts 从 CDN 加载
// 推荐下载后放在本地，更稳定
importScripts('https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js');

self.onmessage = function (e) {
  try {
    const { data, headerMapping } = e.data;

    // 1. 将数据转换为带中文表头的格式 (这一步也可以在主线程做)
    const dataToExport = data.map(row => {
      const newRow = {};
      for (const key in row) {
        const newKey = headerMapping[key] || key;
        newRow[newKey] = row[key];
      }
      return newRow;
    });

    // 2. 执行核心的、耗时的操作
    const worksheet = XLSX.utils.json_to_sheet(dataToExport);
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

    // 3. 生成文件的二进制数据 (ArrayBuffer)
    const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });

    // 4. 将结果发送回主线程
    self.postMessage({ success: true, buffer: wbout });

  } catch (error) {
    // 5. 如果发生错误，将错误信息发回主线程
    self.postMessage({ success: false, error: error.message });
  }
};
